#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
湖州地区数据采集系统 - 启动脚本
提供菜单式的系统操作界面
"""

import os
import sys
import subprocess

def print_banner():
    """打印系统横幅"""
    print("\n" + "="*60)
    print("🏘️ 湖州地区数据采集系统")
    print("="*60)
    print("📍 项目路径: /Users/admin/raycloud/huzhou-xiaoqu/")
    print("📅 创建时间: 2025年8月19日")
    print("="*60)

def print_menu():
    """打印主菜单"""
    print("\n📋 系统功能菜单:")
    print("1. 🔍 查看系统配置")
    print("2. 📊 数据采集")
    print("3. 👀 数据查看")
    print("4. 📈 统计分析")
    print("5. 📁 查看文件列表")
    print("6. 📖 查看项目说明")
    print("7. 📤 导出Excel文件(SQLite)")
    print("8. 📄 导出Excel文件(JSON)")
    print("0. 🚪 退出系统")
    print("-" * 60)

def check_files():
    """检查必要文件是否存在"""
    required_files = [
        'huzhou_real_data_collector.py',
        'huzhou_data_viewer.py',
        'data_statistics.py',
        'config.py',
        'requirements.txt'
    ]
    
    missing_files = []
    for file in required_files:
        if not os.path.exists(file):
            missing_files.append(file)
    
    if missing_files:
        print(f"❌ 缺少必要文件: {', '.join(missing_files)}")
        return False
    
    return True

def run_command(command, description):
    """运行命令并处理结果"""
    print(f"\n🔄 {description}...")
    try:
        result = subprocess.run(command, shell=True, capture_output=True, text=True)
        if result.returncode == 0:
            print(f"✅ {description}完成")
            if result.stdout:
                print(result.stdout)
        else:
            print(f"❌ {description}失败")
            if result.stderr:
                print(result.stderr)
    except Exception as e:
        print(f"❌ 执行错误: {e}")

def show_config():
    """显示系统配置"""
    run_command("python3 config.py", "查看系统配置")

def collect_data():
    """数据采集"""
    print("\n⚠️  注意: 数据采集可能需要一些时间，请耐心等待...")
    run_command("python3 huzhou_real_data_collector.py", "数据采集")

def view_data():
    """数据查看"""
    run_command("python3 huzhou_data_viewer.py", "数据查看")

def analyze_data():
    """统计分析"""
    run_command("python3 data_statistics.py", "统计分析")

def list_files():
    """查看文件列表"""
    print("\n📁 项目文件列表:")
    print("-" * 60)
    
    files = os.listdir('.')
    files.sort()
    
    for file in files:
        if os.path.isfile(file):
            size = os.path.getsize(file)
            if size > 1024 * 1024:
                size_str = f"{size / (1024 * 1024):.1f}MB"
            elif size > 1024:
                size_str = f"{size / 1024:.1f}KB"
            else:
                size_str = f"{size}B"
            
            print(f"📄 {file:<30} {size_str:>10}")

def show_readme():
    """显示项目说明"""
    if os.path.exists('项目说明.md'):
        print("\n📖 项目说明文档:")
        print("-" * 60)
        try:
            with open('项目说明.md', 'r', encoding='utf-8') as f:
                content = f.read()
                # 只显示前500个字符
                print(content[:500] + "..." if len(content) > 500 else content)
        except Exception as e:
            print(f"❌ 读取文件失败: {e}")
    else:
        print("❌ 项目说明文档不存在")

def export_excel():
    """导出Excel文件(SQLite)"""
    run_command("python3 excel_exporter.py", "导出Excel文件(SQLite)")

def export_json_excel():
    """导出Excel文件(JSON)"""
    run_command("python3 json_to_excel.py", "导出Excel文件(JSON)")

def main():
    """主函数"""
    print_banner()
    
    # 检查文件完整性
    if not check_files():
        print("❌ 系统文件不完整，请检查项目目录")
        return
    
    while True:
        print_menu()
        
        try:
            choice = input("请选择功能 (0-8): ").strip()
            
            if choice == '0':
                print("\n👋 感谢使用湖州地区数据采集系统！")
                break
            elif choice == '1':
                show_config()
            elif choice == '2':
                collect_data()
            elif choice == '3':
                view_data()
            elif choice == '4':
                analyze_data()
            elif choice == '5':
                list_files()
            elif choice == '6':
                show_readme()
            elif choice == '7':
                export_excel()
            elif choice == '8':
                export_json_excel()
            else:
                print("❌ 无效选择，请输入 0-8 之间的数字")
                
        except KeyboardInterrupt:
            print("\n\n👋 用户中断，退出系统")
            break
        except Exception as e:
            print(f"❌ 系统错误: {e}")

if __name__ == "__main__":
    main()